From a6a2cea4142e0f16608485ca05a24ec396482ca0 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Thu, 9 May 2013 15:10:29 -0400 Subject: [PATCH] gtkactionmuxer: Reintroduce the passing of event timestamps This is a hack we have in our local fork as compared to upstream; work on a generic "hook" system in here is ongoing, but until then, this is the easiest way to do it. https://bugzilla.gnome.org/show_bug.cgi?id=700257 --- src/gtkactionmuxer.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/gtkactionmuxer.c b/src/gtkactionmuxer.c index 4618564ae..be6696501 100644 --- a/src/gtkactionmuxer.c +++ b/src/gtkactionmuxer.c @@ -24,6 +24,8 @@ #include "gtkactionobservable.h" #include "gtkactionobserver.h" +#include + #include /** @@ -377,6 +379,26 @@ gtk_action_muxer_activate_action (GActionGroup *action_group, g_action_group_activate_action (G_ACTION_GROUP (muxer->parent), action_name, parameter); } +static GVariant * +get_platform_data (void) +{ + gchar time[32]; + GVariantBuilder *builder; + GVariant *result; + + g_snprintf (time, 32, "_TIME%d", clutter_get_current_event_time ()); + + builder = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}")); + + g_variant_builder_add (builder, "{sv}", "desktop-startup-id", + g_variant_new_string (time)); + + result = g_variant_builder_end (builder); + g_variant_builder_unref (builder); + + return result; +} + static void gtk_action_muxer_change_action_state (GActionGroup *action_group, const gchar *action_name, @@ -389,7 +411,15 @@ gtk_action_muxer_change_action_state (GActionGroup *action_group, group = gtk_action_muxer_find_group (muxer, action_name, &unprefixed_name); if (group) - g_action_group_change_action_state (group->group, unprefixed_name, state); + { + if (G_IS_REMOTE_ACTION_GROUP (group->group)) + g_remote_action_group_change_action_state_full (G_REMOTE_ACTION_GROUP (group->group), + unprefixed_name, + state, + get_platform_data ()); + else + g_action_group_change_action_state (group->group, unprefixed_name, state); + } else if (muxer->parent) g_action_group_change_action_state (G_ACTION_GROUP (muxer->parent), action_name, state); } -- 2.39.5